Re: [SQL] How to handle a requirement for nextval - Mailing list pgsql-sql

From Herouth Maoz
Subject Re: [SQL] How to handle a requirement for nextval
Date
Msg-id l03110702b186e1a326b8@[147.233.159.109]
Whole thread Raw
In response to How to handle a requirement for nextval  (The Web Administrator <wwwadmin@wizard.ca>)
Responses Re: [SQL] How to handle a requirement for nextval
List pgsql-sql
At 23:33 +0300 on 18/5/98, The Web Administrator wrote:


> What I want is that the Primary Key (Only Key) be type_id, and int, and
> the first item that I insert should have type_id as '1', next will be
> '2'  etc..
> I could have every insert into this table include a type_id, but that
> seems unessary.
> Can I have something like default='nextval' ?

This is so much a faq, that I went to look at the FAQ. In fact, there is a
question there which is similar to this one, but I think its phrasing
defeats newbies rather than helps them. I for one have never encountered
fields of type SERIAL, and people might not think it's the same sort of
question. The answer is even more of a problem, because the most commonly
used method of doing this is summarised in "look at the create_sequence
manual", whereas the two less recommended methods (using OIDs and using an
auto-incrementing function) are discussed in detail.

Bruce, don't you agree? Perhaps change the phrasing of the question to "How
do I create an auto-incrementing field?"

As for the answer itself, here it is:

In order to create an auto-incrementing field - one which will
automatically receive the value 1 for the first row inserted, 2 for the
second, and so on - you have to define a sequence. For example:

CREATE SEQUENCE emp_no;

Then you define your table. Assuming you want an employee table in which
the emp_id field is autoincrementing, here is what you write:

CREATE TABLE emp
(
    emp_id    int4
              DEFAULT nextval( 'emp_no' )
              NOT NULL
    -- Other fields here
);

Following that, when you want to insert a row, insert values for all other
fields except the emp_id field. It will insert its own value automatically.

For more information, read the man page "create_sequence".

Herouth



pgsql-sql by date:

Previous
From: Jerome Knobl
Date:
Subject: Re: [SQL] Case in-sensitive searches
Next
From: Marin D
Date:
Subject: Re: [SQL] Case in-sensitive searches